1
自然語法:運算子重載的哲學
AI037Lesson 17
00:00

自然語法 主張使用者定義的類型應當如同 一等公民一般。透過實作 運算子重載,我們允許類別使用標準符號(例如 +==),這能降低認知負荷,並符合 最小驚訝原則

1. 結構與分派

運算子是一種具有特殊名稱的函數:關鍵字 operator 後接一個符號。一個 一元運算子 只有一個操作數,而一個 二元運算子 則有兩個操作數。當以 成員函數定義時,左側操作數會綁定至 隱含的 this 指標 (a.operator+(b))。若為 非成員,則兩者皆為明確的(operator+(a, b))。

可重載+ - * / % ^& | ~ ! = < >+= -= *= /= << >>== != <= >= && ||++ -- , ->* -> () []不可重載:: (作用域).* (成員解引用)(點運算子)?: (條件運算子)表 14.1. 運算子權限(參考頁碼 684)

2. 限制與倫理

C++ 防止「語言惡意破壞」:你無法創造新的符號(例如 **)或重新定義內建類型的操作(例如 int + int)。優先順序與結合性都是 不可變動的。架構原則:定義了 == 的類別可以輕鬆整合至如 std::find

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>